/* ========================================================================= */
/* ------------------------------------------------------------------------- */
/*!
  \file			edstgs.cc
  \date			Dec 2012
  \author		TNick

  \brief		Contains the implementation for EdStgs class


*//*


 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Please read COPYING and README files in root folder
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
/* ------------------------------------------------------------------------- */
/* ========================================================================= */
//
//
//
//
/*  INCLUDES    ------------------------------------------------------------ */

#include	"edstgs.h"

#include	<cpg/settings/stgsbase.h>
#include	<QPushButton>
#include	<QMessageBox>
#include	<QSettings>
#include	<QDebug>

using namespace Gui;

/*  INCLUDES    ============================================================ */
//
//
//
//
/*  CLASS    --------------------------------------------------------------- */

/* ------------------------------------------------------------------------- */
EdStgs::EdStgs					( QWidget *parent ) :
	QDialog(parent), MemTrack()
{

	ui.setupUi(this);

	connect ( ui.buttonBox, SIGNAL(accepted()), this, SLOT(okPressed()) );

	connect ( ui.buttonBox->button( QDialogButtonBox::Apply ), SIGNAL(clicked()),
			  this, SLOT(applyPressed()) );
	connect ( ui.buttonBox->button( QDialogButtonBox::Reset ), SIGNAL(clicked()),
			  this, SLOT(resetPressed()) );
	connect ( ui.buttonBox->button( QDialogButtonBox::RestoreDefaults ), SIGNAL(clicked()),
			  this, SLOT(restorePressed()) );

}
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
EdStgs::~EdStgs					( void )
{
	/* stub */
}
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
int						EdStgs::addPage				( StgsBase * page )
{
	int i = stgs_lst_.indexOf( page );
	if ( i >= 0 )
	{
		return i;
	}
	i = stgs_lst_.count();
	stgs_lst_.append( page );

	ui.tabWidget->addTab( page->asWidget(), page->icon(), page->title() );
	ui.tabWidget->setCurrentIndex( ui.tabWidget->count() - 1 );
	page->reload();

	return i;

}
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
void					EdStgs::changeEvent			( QEvent *e )
{
	QDialog::changeEvent( e );
	switch ( e->type() ) {
	case QEvent::LanguageChange:	{
		ui.retranslateUi( this );
		break;}
	default:						{
		break;}
	}
}
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
bool					EdStgs::applyPressed		( void )
{
	QString err_srt;
	int i = 0;
	foreach( StgsBase* sb, stgs_lst_  )
	{
		if ( sb->apply( err_srt ) == false )
		{
			QMessageBox::warning( this, tr("Invalid settings"), err_srt );
			ui.tabWidget->setCurrentIndex( i );
			return false;
		}
		i++;
	}
	return true;
}
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
bool					EdStgs::okPressed			( void )
{
	if ( applyPressed() == false )
	{
		return false;
	}
	accept();
	return true;
}
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
void					EdStgs::resetPressed		( void )
{
	foreach( StgsBase* sb, stgs_lst_  )
	{
		sb->reload();
	}
}
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
void					EdStgs::restorePressed		( void )
{
	foreach( StgsBase* sb, stgs_lst_  )
	{
		sb->defaults();
	}
}
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
int						EdStgs::start				( void )
{
	QSettings	stg;
	stg.beginGroup( "gui/preferences" );
	int crt = stg.value( "crt_tab" ).toInt();
	if ( crt >= 0 )
	{
		ui.tabWidget->setCurrentIndex( crt );
	}
	int i = exec();
	stg.setValue( "crt_tab", ui.tabWidget->currentIndex() );
	stg.endGroup();
	return i;
}
/* ========================================================================= */


/*  CLASS    =============================================================== */
//
//
//
//
/* ------------------------------------------------------------------------- */
/* ========================================================================= */







